package oj;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
 * @author 郝文雪
 * @date 2022/7/17 21:40
 * @Description 根据身高重建队列
 */
public class LC406 {
    //根据h降序排列，k升序排列
    public int[][] reconstructQueue(int[][] people) {
        Arrays.sort(people,new Comparator<int[]>(){
            @Override
            public int compare(int[] p1,int[] p2){
                if(p1[0]!=p2[0]){
                    return p2[0]-p1[0];
                }else{
                    return p1[1]-p2[1];
                }
            }
        });
        //如果people[i][1]小于等于list的大小，说明当前list中的数量就是比people[i][0]大的数量，直接将people[i]插入list尾部即可
        //否组就将people[i]插入到people[i][1]的位置，以到达最终的k位置
        List<int[]> list=new ArrayList<>();
        for(int i=0;i<people.length;i++){
            if(list.size()>people[i][1]){
                list.add(people[i][1],people[i]);
            }else{
                list.add(list.size(),people[i]);
            }
        }
        return list.toArray(new int[list.size()][]);
    }
}
